package br.srv.full.virtual.engine.message;

import java.io.UnsupportedEncodingException;

import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import br.srv.full.virtual.entities.resume.UserLogin;

public class MailSender {

	private final Log log = LogFactory.getLog(getClass());

	public String createMessage(UserLogin _user) {
		StringBuilder l_sb = new StringBuilder();
		l_sb.append("<html>").append("<body>");
		l_sb.append("<h1>").append("Favor confirmar seu registro!").append(
				"</h1>");

		l_sb.append("<p>");
		l_sb.append("Recebemos em nosso site uma solicitação de registro,");
		l_sb.append(" de um usuário que se identificou como ");
		l_sb.append(_user.getName());
		l_sb.append(".");
		l_sb.append("</p>");
		l_sb.append("<p>");
		l_sb.append("Caso vc não tenha feito este registro");
		l_sb.append(" e não deseja confirmar o cadastro,");
		l_sb.append(" basta ignorar este e-mail.");
		l_sb.append("</p>");
		l_sb.append("<p>");
		l_sb.append("Caso contrario clique no link abaixo,");
		l_sb.append(" e finalize o preenchimento de seu formulário.");
		l_sb.append("</p>");
		l_sb.append("<p>");
		l_sb
				.append(
						"<a href=\"http://virtual.full.srv.br/FirstFaseRegistration.faces?UUID=")
				.append(_user.getRegistrationId()).append("\">");
		l_sb.append("Finalizar Registro");
		l_sb.append("</a>");

		l_sb.append("</body>").append("</html>");

		return l_sb.toString();
	}

	public void sendMessage(UserLogin _user, String l_sbMsg)
			throws MessagingException, NamingException,
			UnsupportedEncodingException {
		InitialContext l_ctx;
		Session l_sessionMail = null;
		l_ctx = new InitialContext();

		l_sessionMail = (Session) l_ctx
				.lookup("java:FullServiceVirtualMailService");
		log.info("Obtendo Seção: " + l_sessionMail);
		javax.mail.Message l_msg = new MimeMessage(l_sessionMail);
		l_msg.setContent(l_sbMsg, "text/html");
		l_msg.setSubject("Confirmação de Registro na Fullservice Virtual!");
		UserLogin l_user = _user;
		Address l_address = new InternetAddress(l_user.getEmail(), l_user
				.getName());
		log.info("Preparando envio da mensagem para: " + l_address);
		l_msg.setRecipient(RecipientType.TO, l_address);

		// aqui deve usar o metodo sendo do Transporte obtido na Seção.
		l_sessionMail.getTransport().send(l_msg);

		log.info("Mensagem Envida");

		log.info(l_sessionMail);
	}

}
